perm filename CRITIQ[P,JRA] blob
sn#159081 filedate 1975-05-14 generic text, type T, neo UTF8
\\M1NGR25;\F1
\CCOLLECTION OF RANDOM COMMENTS, COMPLAINTS, AND CRAP ABOUT CIS280
\J
1. The worst thing that was said on the course reviews: "He should
have taught the compiler course."
Well, I think compiler courses are too narrow a study of the problems
of computer languages. In the first place a one semester course
typically consists of 85% syntax analysis and 15% semantic
considerations. Whereas the emphasis should be completely reversed.
The problems of syntax are important but they tend to be only a very
small portion of the problems of translator writing. Their saving
grace seems to be that they are a nice comfortable, mathematically
well-defined niche, well away from the cold. If you believe that the
reason for studying this kind of compiler course is to become a
"parser-writer", then lucky you. I happen to feel that the problems
in language implementation are not "write a super-fast parser for
XXX", but "what the ______ should XXX be?" You don't understand the
problems of language design by studying syntax analysis.
This harangue is really directed to a discussion of just what a
University education in (software) Computer Science should be. First
point: the distinction between software and hardware should be
discouraged. In is not reasonable to expect hardware people with
limited software background to design machines which are reasonable
devices to program. Similarly, software types cannot be ignorant of
hardware considerations if they expect to have an impact on the
design of their machines. (Indeed the problems are compounded in an
Interdisciplinary program like the current one!) I believe that the
current University exposure to Computer Science should be as
traumatic as possible. If you want to be assured of the "eternal
truth" pick another major or go to Condie College and become a
technician. The current state of C.S. just doesn't support a
"comfortable" presentation. The field is just beginning to become
respectable, most of the ideas are really quite close to the surface.
But to teach C.S. courses with the implied confidence that, say,
mathematics courses demand, would be a disservice. What was suitable
fare for graduate seminars 3 years ago, is now being taught to
undergraduates. The field is changing very rapidly, both technically
and intellectually. It should therefore be the position of a
University program to try to point out those bright lights which
might perhaps endure, and to show up any and all fallacies which are
being currently touted as the "final truth". Thus when I said that
you should become skeptics as a result of this course, I meant it.
This rapid change in C.S. points up another difficult in department
set-ups: namely the difficulty of "staying up". The lead time on book
publishing is 3-5 years. The lead-time on journal articles is 1-2
years. Most research papers float in the "underground" for a couple
of years before they make it even to a journal. So if you want to
stay current you need a tap into the subconscious. This again points
out a difference between an established traditional subject and C.S.
Graduate math programs have sufficient depth and rich history to
support lots and lots of well-established courses. C.S. just doesn't
have the requisite depth yet; it will, but it is still really quite
shallow. Granted, you can take last years math course and add two
weeks of programming and call it a C.S. course, but that's not C.S.
any more than a horse with seat belts is a car (or cdr). Similarly
E.E. hardware courses with additional study of the current machine
technology aren't satisfactory. (Notice its much easier to say what
isn't than what is.)
2. Best thing said. "It wasn't practical."
Well, when you take graduate E.E. courses they don't teach you how to
change light bulbs; when you take graduate math courses they don't
teach you how to balance your checkbook. A similar degree of
detachment and sophistication is demanded in most graduate
departments. In particular it should be a primary responsibility of
C.S. departments to attempt to show how things should be done rather
than show how things are currently being done. Granted that the
typical data structures course is a tour through the maze of
techniques and trickery for representation of data. I however don't
believe that this is a beneficial approach. First it implies that
all is right with the world and we will simply pass on to you poor
unfortunates all that you need. Second it instutionalizes a premature
departmentalization of the field(wow, that does sound GOOD!!!). That
is we can separate out, data structures from compiler construction,
from systems programming, from language design, and from programming
style or philosophy, and study them separately. Indeed according to
most college catalogs, we can study data structuring BEFORE all of
these other topics. Bull shit. The techniques of data structuring
were natural outgrowths of complex programming; taken in that context
they are really quite simple. Taken out of context, they become
unnecessarily arcane tricks, and students exposed to them in this
manner either don't see how they should be applied: either they don't
see at all, or want to represent everything as a linked list or
threaded binary tree.
3. I'm glad you asked that question: "What happened to our computer
time?"
Yes you should have had exposure to a machine to run LISP programs.
A major difficulty is that LISP really is an on-line language. The
construction debugging and running of LISP programs is most
comfortably done at a console. Particularly when the language is
being learned. Since the programs are expressed to the machine in
their s-expression representation, the syntax is vile! If you have to
(bleagh) punch cards you are almost guaranteed to make errors. If you
must wait for output the experience becomes incredibly frustrating.
Since this was not a class in LISP programming, and since I don't
expect students to do things I wouldn't do, I decided to stay off the
machine. (See 4. below also). Here's another complaint about courses:
Courses like "Programming in XXX". Programming languages are tools;
they should be studied as such. In other departments they should be
used in an applications course. There we need to show that the traditional
approach to the subject matter can be improved by using a computer.
The student should have access to a terminal so that he may learn the
necessary language, but the programming language should simply
augment the existing material. In C.S. we should study languages like medical
students study cadavers. (In LISP we study cadadrs... sorry!?!)
Perhaps if the engineering school offers a
course in Advanced Crescent Wrench, then C.S. should feel obligated
to respond with a programming language course, but until then ...
4. Pace -- "about right: ~75%"
Bull. This course was done much too fast. In fact if you look at the
rating on "class discussion, question handling" and to some extend,
"clarity of goals", it puts the lie to "about right". If we had
another semester I would start over from page 1, and do it all
over again. To cover the material correctly would require a full
year. But since there was only one semester, I felt is was more
valuable to do everything through once. Then you would at least be
exposed to the material; if you had the interest you can read it over
yourselves; if you don't then _____ __ _____ _____. I would have
preferred to spend much more class time answering questions
and pontificating, but
there just isn't time. I would have preferred to have programming
projects, and indeed implementation experiments but there isn't time
in one semester. Implementation of languages requires a through
understanding of all aspects of the language. That sophistication
itself requires at least a semester. That, by the way, is another
objection to the typical compiler course; the requisite depth is either
ignored or presupposed. In either case someone gets short-changed.
However, on the other side, the sharp division in "encouraged your
interest" (indeed in most of the responses!!) leads me to believe
that I didn't convince anyone who
wasn't convinced before. For you doubting Thomas's: eat your heart
out.
5. Clarity of course goals -- "relatively losing: ~65%"
I believe that. It could stem from two sources: first, the rapid
coverage of the material without appropriate pauses to regroup and
relate the material.
A more leisurely course could have subdued this.
However my favorite excuse is that you expected
a nice neat course on technique-ery, and you didn't get it. I think
student, and people in general, want answers rather than lots and
lots of questions. Of course, there's another alternative: the person
who didn't like any of the course might be right-- it's all a krok.
6. Most puzzling response -- "accessibility to students: ~65% above good"
Incredible!! I was only there 4 hours a week. Perhaps you meant
"irascibility to students"?